GitHub |
您所在的位置:网站首页 › price 下载 › GitHub |
Kaggle California Housing Prices报告 一、问题定义 该问题来源于kaggle,主要是通过上世纪90年代的加利福利亚地区的房价的数据来训练模型,最终可以较为准确预测出对应房屋的价格。该问题实际上还是一道回归问题。 从kaggle上获取数据后,为了更好的训练,每个样本的特征属性和标签(即房屋价格)需要进行相关处理(包括取出异常值、填充缺省值、特征转换,数据转化等),然后构建多种误差较小的模型,找到最佳参数后将模型stacking融合,获取更小的误差,达到更好的预测效果,然后将模型保存起来。本次题目使用rmse均方根误差作为衡量模型标准,最终降低到0.10左右。 二、数据获取 首先将Kaggle上提供的相关的训练集和测试集下载下来,主要是train.csv和test.csv,训练集和测试集都是DataFrame数据结构。 然后查看其数据结构。训练集的shape是(1460,81)表示共有1460个样本,每个样本有81个属性,测试集的shape是(1459,80)表示共有1459个测试样本,每个测试样本有1459个属性。除此以外,通过head()函数,可以查看训练集和测试集的前5行数据,进行直观的认识,如下所示。 从上面,我们可以发现训练集有81个属性,但第一个Id属性没有意义,之后可以考虑删去。最后一个属性SalePrice是该样本数据的标签,其中有些属性是字符型,有些是数据型。而测试集则没有SalePrice标签属性,因为其不参与训练。 三、数据研究 该部分主要是通过可视化或者直接打印来查看属性之间的相关性,每个属性的分布情况等,从而为后面数据清洗,找出与标签属性SalePrice最相关的其他属性做准备。 1、作图来显示相关性 corrmat=train_data.corr() plt.figure(figsize=(12,9)) cols=corrmat.nlargest(10,'SalePrice')['SalePrice'].index cm=np.corrcoef(train_data[cols].values.T) sns.set(font_scale=1.25) hm=sns.heatmap(cm,cbar=True,annot=True,square=True,fmt='.2f', annot_kws={'size': 10},xticklabels=cols.value 2、直接输出相关度高的属性 利用DataFrame数据类型的函数corr(),并将与SalePrice属性相关度大于0.5的所有属性取出来: Corr=train_data.corr() print(Corr[Corr['SalePrice']>0.5]),结果显示如下。 发现除了SalePrice自身外,还有10个属性与SalePrice的相关程度较高。 四、数据准备 1、去除异常数据 上面找出10种与SalePrice最相关的属性后,由于其对标签影响最大,所以我们就要在这些属性上进行一个处理—除去少数非正常分布的属性的值。可以通过画出每个属性与SalePrice的关系的散点图来查看那些点偏离正常分布,画出的部分图像如下: 观察这些分布,可以删去一些异常点: train_data.drop(train_data[(train_data['GrLivArea']>4000)&(train_data['SalePrice'] |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |